package com.lianjia.sh.tools.event.listener;

import com.lianjia.sh.tools.event.event.PropertyAddEvent;
import com.lianjia.sh.tools.msg.v1.model.MailMsg;
import com.lianjia.sh.tools.msg.v1.model.PnsTextMsg;
import com.lianjia.sh.tools.msg.v1.model.impl.MailMsgImpl;
import com.lianjia.sh.tools.msg.v1.model.impl.PnsTextMsgImpl;
import com.lianjia.sh.tools.msg.v1.sender.Sender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

/**
 * 使用listener的目的是：核心业务代码与辅助功能解耦；
 *
 * 因此：核心业务只触发事件，不操作辅助功能，它的功能由listener中间接实现；有些辅助功能可能代码冗长，完全超出了主业务代码长度。
 *
 * 如果此处使用统一的Event接收处理，那么event对象本身是一个超级对象，必须实现所有辅助功能event接口；
 *
 * 也就是说：event包含各种类型辅助功能的数据；即此event数据的拼装还是在原核心业务中。
 *
 * 如果是这样，就没必要listener了，直接在核心业务调用消息发送就可以。
 *
 * Created by yangsp1 on 16/6/24.
 */
@Component
public class PropertyAddSendPnsListener implements ApplicationListener<PropertyAddEvent> {
    @Autowired
    Sender sender;

    @Override
    public void onApplicationEvent(PropertyAddEvent propertyAddEvent) {
        System.out.println("房源新增并发Pns监听器：监听到房源新增，登录人为：" + propertyAddEvent.getLoginEmp().getEmpName());

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        PnsTextMsg pnsTextMsg = new PnsTextMsgImpl();
        pnsTextMsg.setAppId(1000);
        pnsTextMsg.setBusinessId(1014);
        pnsTextMsg.setRecipients("109106");
        pnsTextMsg.setRemark(propertyAddEvent.getLoginEmp().getEmpName()+" 增加了房子：" + propertyAddEvent.getProperty().getRoomNo());


        MailMsgImpl mailMsg = new MailMsgImpl();
        mailMsg.setSubject("请问这样做合适吗？");
        mailMsg.setText("hi,你好： 我是一名开发人员，请问我这样做合适吗？");
        String[] to = {"yangsp1@126.com"};
        mailMsg.setTo(to);
        sender.send(mailMsg);
        //sender.send(pnsTextMsg);
    }
}
